package Model;

/**
 * Описание вершины графа
 *
 * @author pol
 */
public class Vertex {

    /**
     * Конструктор вершины устанавливает предка вершины - null принадлежность к
     * дереву - false
     */
    public Vertex(String name) {
        vertexName = name;
        ancestor = null;
        inTree = false;
    }

    /**
     * Устанавливает имя вершины
     *
     * @param name имя вершины
     */
    public void setName(String name) {
        vertexName = name;
    }

    /**
     * Возвращает имя вершины
     *
     * @return
     */
    public String getName() {
        return vertexName;
    }

    /**
     * Устанавливает предка вершины
     *
     * @param v предок вершины
     */
    public void setAncestor(Vertex value) {
        ancestor = value;
    }

    /**
     * Возвращает предка вершины
     *
     * @return
     */
    public Vertex getAncestor() {
        return ancestor;
    }

    /**
     * Отмечает вершину, если она была посещена
     *
     * @param b
     */
    public void setSelected(boolean b) {
        inTree = b;
    }

    /**
     * Возвращает true если вершина была отмечена, иначе false
     *
     * @return
     */
    public boolean isSelected() {
        return inTree;
    }

    public boolean equals(Object otherObject) {
        if (this == otherObject) {
            return true;
        }

        if (otherObject == null) {
            return false;
        }

        if (getClass() != otherObject.getClass()) {
            return false;
        }

        Vertex other = (Vertex) otherObject;

        return vertexName.equals(other.getName())
                && ancestor == other.getAncestor();
    }
    
    private String vertexName;
    private Vertex ancestor;
    private boolean inTree;
}
